// 用户路由模块
const express = require('express');
// const db=require('../db');
// 创建路由对象
const router = express.Router();
const db = require('../db/index');
// 导入加密密码包
const bcrypt = require('bcryptjs');
//导入自定义的验证规则包
const Joi = require('joi');
//导入验证表单数据的中间件
const expressJoi = require('@escook/express-joi');
//用户名的验证规则
const username = Joi.string().alphanum().min(3).max(10).required();
//密码的验证规则
const password = Joi.string().pattern(/^[\S]{6,12}$/).required();

//登录表单的验证规则对象
const login_schema = {
    //表单需要对req.body 中的数据进行验证
    body: {
        username,
        password,
    }
};
// 登录接口
router.post('/login', expressJoi(login_schema), (req, res) => {
    // 加密密码
    // console.log(bcrypt.hashSync("123456", 10));
    // console.log(req.body);
    const userinfo = req.body;
    // 1.检测表单数据是否合法
    // if (userinfo.username == '' && userinfo.password == '')
    //     return res.cc('用户名和密码不能为空');
    // 2.根据用户名查询用户数据

    // 定义sql语句
    const sql = 'select * from sp_manager where mg_name=?'
        // 执行SQL语句，查询用户信息
    db.query(sql, userinfo.username, (err, result) => {
        // 执行sql语句失败
        if (err)
            return res.cc(err.message);
        // 执行成功，但是查询到的数据不等于1
        if (result.length !== 1)
            return res.cc('用户名错误');
        // 3.判断用户输入密码是否正确
        //  输入密码和数据库里的密码进行比较
        const compareResult = bcrypt.compareSync(userinfo.password, result[0].mg_pwd)
        if (!compareResult) return res.cc('密码错误')
            // res.send('登录成功')
        const data = {
            "id": result[0].mg_id,
            "rid": result[0].role_id,
            "username": result[0].mg_name,
            "mobile": result[0].mg_mobile,
            "email": result[0].mg_email
        }
        res.cc('登录成功', 200, data);
    });

    // 4.生成token字符串

    // res.send("登录")
});
// 将路由对象共享出去
module.exports = router